﻿#light

(* An example implementation of passing state around. Works fine is "ClassUnderTest" works as a Value Object *)

open Turtle
open FsxUnit.Syntax


// Construct
let ATurtle () = new TurtleImmutable()

//MoveTurtle
let MovesOneStepForward = fun (turtle : TurtleImmutable) -> turtle.Go()
let IsMovedOneStepForward = fun (turtle : TurtleImmutable) -> turtle.Position.X |> should equal 1; turtle
let RotationIs angle = fun (turtle : TurtleImmutable) -> turtle.Direction |> should equal 0.0; turtle

//MoveTurtleToPosition
let IsRotated90DegreesToTheRight = fun (turtle : TurtleImmutable) -> turtle.Left()
let TurtleWalksSteps steps = fun (turtle : TurtleImmutable) -> turtle.GoSteps(steps)
let TurtleIsLocatedAt (x,y) = fun (turtle : TurtleImmutable) -> turtle.Position |> should equal (new Position(x,y)) ; turtle

//NotFullyImplementedStory
let SomethingElse = id
let SomethingHappens = id
let SomethingHappened = id
let WeCanSupplyArgumentsAsWell arg = id